package com.meihuayishu.backend.service;

import com.meihuayishu.backend.dto.*;
import org.springframework.data.domain.Pageable;

import java.time.LocalDate;
import java.util.List;

/**
 * 占卜记录管理服务接口
 */
public interface DivinationRecordService {
    
    /**
     * 保存占卜记录
     * @param userId 用户ID
     * @param request 保存请求
     * @return 保存结果
     */
    SaveDivinationRecordResponse saveDivinationRecord(String userId, SaveDivinationRecordRequest request);
    
    /**
     * 获取占卜历史记录
     * @param userId 用户ID
     * @param page 页码
     * @param size 每页数量
     * @param type 类型过滤
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @param sort 排序方式
     * @return 分页历史记录
     */
    DivinationHistoryResponse getDivinationHistory(String userId, Integer page, Integer size, 
                                                  String type, LocalDate startDate, LocalDate endDate, String sort);
    
    /**
     * 获取占卜记录详情
     * @param userId 用户ID
     * @param recordId 记录ID
     * @return 记录详情
     */
    DivinationRecordDetailResponse getDivinationRecordDetail(String userId, String recordId);
    
    /**
     * 添加/取消收藏
     * @param userId 用户ID
     * @param request 收藏操作请求
     * @return 操作结果
     */
    FavoriteOperationResponse toggleFavorite(String userId, FavoriteRequest request);
    
    /**
     * 获取收藏列表
     * @param userId 用户ID
     * @param page 页码
     * @param size 每页数量
     * @return 收藏列表
     */
    FavoriteListResponse getFavoriteList(String userId, Integer page, Integer size);
    
    /**
     * 删除占卜记录
     * @param userId 用户ID
     * @param recordId 记录ID
     * @return 是否删除成功
     */
    boolean deleteDivinationRecord(String userId, String recordId);
    
    /**
     * 更新记录标签
     * @param userId 用户ID
     * @param recordId 记录ID
     * @param tags 新标签
     * @return 是否更新成功
     */
    boolean updateRecordTags(String userId, String recordId, List<String> tags);
}